package cz.semjob.linguistic.data;

import cz.semjob.linguistic.reader.attribute.value.linguistic.ParserAttributeValue;
import cz.semjob.linguistic.reader.attribute.value.linguistic.PartOfSpeechAttributeValue;

public class LinguisticWord {
	
	private int id;
	
	private String word;
	
	private String lemma;
	
	private PartOfSpeechAttributeValue posAttribute;
	
	private ParserAttributeValue parserAttribute;

//	public boolean isProperNoun() {
//		String[] lemmaParts = lemma
//	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getWord() {
		return word;
	}

	public void setWord(String word) {
		this.word = word;
	}

	public String getLemma() {
		return lemma;
	}

	public void setLemma(String lemma) {
		this.lemma = lemma;
	}

	public PartOfSpeechAttributeValue getPosAttribute() {
		return posAttribute;
	}

	public ParserAttributeValue getParserAttribute() {
		return parserAttribute;
	}

	public void setParserAttribute(ParserAttributeValue parserAttribute) {
		this.parserAttribute = parserAttribute;
	}

	public void setPosAttribute(PartOfSpeechAttributeValue posAttribute) {
		this.posAttribute = posAttribute;
	}

	@Override
	public String toString() {
		return "LinguisticWord [id=" + id + ", word=" + word + ", lemma="
				+ lemma + ", posAttribute=" + posAttribute
				+ ", parserAttribute=" + parserAttribute + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		result = prime * result + ((lemma == null) ? 0 : lemma.hashCode());
		result = prime * result
				+ ((parserAttribute == null) ? 0 : parserAttribute.hashCode());
		result = prime * result
				+ ((posAttribute == null) ? 0 : posAttribute.hashCode());
		result = prime * result + ((word == null) ? 0 : word.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		LinguisticWord other = (LinguisticWord) obj;
		if (id != other.id)
			return false;
		if (lemma == null) {
			if (other.lemma != null)
				return false;
		} else if (!lemma.equals(other.lemma))
			return false;
		if (parserAttribute == null) {
			if (other.parserAttribute != null)
				return false;
		} else if (!parserAttribute.equals(other.parserAttribute))
			return false;
		if (posAttribute == null) {
			if (other.posAttribute != null)
				return false;
		} else if (!posAttribute.equals(other.posAttribute))
			return false;
		if (word == null) {
			if (other.word != null)
				return false;
		} else if (!word.equals(other.word))
			return false;
		return true;
	}
	
	
	
	

}
